//需求：利用系统调用实现love.txt的一个备份love2.txt，并在控制台输出文件内容

#include <stdio.h>
#include<fcntl.h>
#include <unistd.h>


int main(int argc, char *argv[])
{
    //打开读文件,得到对应的文件描述符
    int fd = open("love.txt",O_RDONLY);//只读
    if(fd == -1)
    {
        perror("打开读文件失败");
        return -1;
    }
    //打开写文件
    int fd2 = open("love2.txt",O_CREAT|O_WRONLY|O_APPEND,0644);//追加写，如果文件不存在则创建
    if(fd2 == -1)
    {
        perror("打开写文件失败");
        close(fd);
        return -1;
    }

    //边读边写，同时输出
    char buf[100];
    ssize_t read_size;
    while((read_size = read(fd,buf,sizeof(buf))) > 0)
    {
        //写入fd2
        write(fd2,buf,read_size);
        //输出到控制台
        write(STDOUT_FILENO,buf,read_size);
    }
    if(read_size == -1)
    {
        perror("读文件失败");
        close(fd);
        close(fd2);
        return -1;
    }
    //关闭读文件和写文件
    close(fd);
    close(fd2);
    printf("文件备份成功\n");

    return 0;
}